perm filename FORFNS[BNF,JRA] blob
sn#005913 filedate 1972-10-06 generic text, type T, neo UTF8
(SETQ IBASE (ADD1 7))
(DEFPROP FORFNS
(NIL FORFNS %FOR %WHILE DONEP)
VALUE)
(DEFPROP FORFNS
(NIL FORFNS %FOR %WHILE DONEP)
VALUE)
(DEFPROP %FOR
(LAMBDA(VAR CONTROL WHILE ACTION UNLESS)
(SUBST VAR
(QUOTE %X)
(APPEND (LIST (QUOTE PROG) (QUOTE (%X %L %R %R1)))
(CADDR ACTION)
(LIST (CADDR CONTROL) (QUOTE L1) (CADR CONTROL))
(CADDDR CONTROL)
WHILE
UNLESS
(LIST (CAR ACTION) (QUOTE L3) (CAR CONTROL) (QUOTE (GO L1)) (QUOTE L2))
(CADR ACTION))))
EXPR)
(DEFPROP %WHILE
(LAMBDA(WHILE ACTION UNLESS)
(APPEND (LIST (QUOTE PROG) (QUOTE (%R %R1)))
(CADDR ACTION)
(LIST (QUOTE L1) ((FORM (X) (COND ((NOT X) (GO L2)))) WHILE))
UNLESS
(LIST (CAR ACTION) (QUOTE L3) (QUOTE (GO L1)) (QUOTE L2))
(CADR ACTION)))
EXPR)
(DEFPROP DONEP
(LAMBDA(V S U)
(COND ((NULL U) (QUOTE L9))
(T
((LAMBDA (E1) (LIST (QUOTE COND) (LIST E1 (QUOTE (GO L2)))))
(COND ((NUMBERP S) (LIST (COND ((MINUSP S) (QUOTE *LESS)) (T (QUOTE *GREAT))) V U))
(T (LIST (QUOTE MINUSP) (LIST (QUOTE *TIMES) (LIST (QUOTE *DIF) U V) S))))))))
EXPR)